// 实现逆序的Memcpy方法。
// 函数原型： void * reversememcpy ( void * destination, const void * source, int num );
// 功能要求： 从source所指的内存地址的起始位置开始拷贝num个字节，按字节逆序保存到目标destination所指的内存地址的起始位置中。
// 返回值：为destination

// 注意：
// 1. 本函数实现的是按字节逆序拷贝。例如source指向位置，如果依次保存了'a','b','c','d'，当num=4时，则逆序拷贝后destination指向的位置应该依次'd','c','b','a'.
// 2. 将源文件命名为functions.cpp。
// 3. 遇到异常情况，输出"error"；否则不要随意输出，会视为错误。

#include <stdio.h>

void * reversememcpy ( void * destination, const void * source, int num )
{
    char *des = (char*)destination, *src = (char*)source;
    int i = 0, deltaSpace = des - src;
    deltaSpace = deltaSpace < 0 ? -deltaSpace : deltaSpace;
    if(des == NULL || src == NULL || num < 0 || deltaSpace < num)
    {
        printf("error");
        return NULL;
    }
    for(i = 0; i < num; i++)
    {
        des[num-i-1]=src[i];
    }
    return (void*)des;
}

// 提交记录：
// 40
// 27_逆序memcpy
// C++
// 2024-07-03 20:26:20.0
// score
// 100

// Written By Sibei